package cn.jsj.utils;

import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;


/**
 * 生成JSON类型的数据
 * @author TM05
 *
 */
public class ProduceJsonData {

	/**
	 * 根据队列产生JSON类型数据
	 * @param list：对象列表
	 * @param totalNumber：总共记录数
	 * @return：JSON型数据字符串
	 */
	public String jsonFromList(java.util.List list ,int totalNumber) {
		//获取方法队列
		Method[] method=list.get(0).getClass().getDeclaredMethods();
		//新建JSON型数据
		java.lang.StringBuilder sb=new java.lang.StringBuilder();
		sb.append("{totalCount:"+totalNumber+",result:");
		sb.append("[");
		//生成JSON型数据
		for(int i=0;i<list.size();i++){
			sb.append("{");
		for(int j=0;j<method.length;j++){
			//判断方法是否为get方法
			if(method[j].getName().startsWith("get")){
				//获取属性名
				String attName=method[j].getName().substring(3).toLowerCase();
				//判断方法返回类型是否为int，若为int不需要加单引号
				if(!method[j].getReturnType().getName().equalsIgnoreCase("int")){
				sb.append(attName+":");
				sb.append("'");
				try {
					sb.append(method[j].invoke(list.get(i), null).toString());
				} catch (IllegalArgumentException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				} catch (IllegalAccessException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				} catch (InvocationTargetException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				sb.append("',");
				}
				else{
					sb.append(attName+":");
					try {
						sb.append(method[j].invoke(list.get(i), null).toString());
					} catch (IllegalArgumentException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					} catch (IllegalAccessException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					} catch (InvocationTargetException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
					sb.append(",");
				}
			}
		}
		//去掉最后一个逗号
		sb=sb.replace(sb.length()-1, sb.length(), "");
			sb.append("},");
		}
		//去掉最后一个逗号
		sb=sb.replace(sb.length()-1, sb.length(), "");
		sb.append("]");
		sb.append("}");
	SysLogger.PrintInfo(sb.toString());
		return sb.toString();
	}
	
	}
